cmake_minimum_required(VERSION 3.10)
project(algorithm_tests)
set(TARGET algorithm_tests)

# 寻找GTest
find_package(GTest REQUIRED)
# find_package(GMock REQUIRED)

include_directories(
    ${GTEST_INCLUDE_DIRS}
)

file(GLOB_RECURSE LOCAL_SOURCES
    "*.cc"                # 当前目录的 .cc 文件
    "array/*.cc"                # 当前目录的 .cc 文件
    "graph/*.cc"                # 当前目录的 .cc 文件
    "hash_table/*.cc"          # 当前目录的 .cc 文件
    "list/*.cc"                # 当前目录的 .cc 文件
    "math/*.cc"                # 当前目录的 .cc 文件
    "path_planning/*.cc"        # 当前目录的 .cc 文件
    "queue/*.cc"                # 当前目录的 .cc 文件
    "recursion/*.cc"            # 当前目录的 .cc 文件
    "sort/*.cc"                # 当前目录的 .cc 文件
    "tree/*.cc"                # 当前目录的 .cc 文件
)

file(GLOB_RECURSE SRC_FILES 
    "${PROJECT_SOURCE_DIR}/../src/array/*.cc"
    "${PROJECT_SOURCE_DIR}/../src/event_driven/*.cc"
    "${PROJECT_SOURCE_DIR}/../src/graph/*.cc"
    "${PROJECT_SOURCE_DIR}/../src/hash_table/*.cc"
    "${PROJECT_SOURCE_DIR}/../src/list/*.cc"
    "${PROJECT_SOURCE_DIR}/../src/math/*.cc"
    "${PROJECT_SOURCE_DIR}/../src/path_planning/*.cc"  # 明确包含子目录（可选，更精确）
    "${PROJECT_SOURCE_DIR}/../src/queue/*.cc"          # 明确包含子目录（可选，更精确）
    "${PROJECT_SOURCE_DIR}/../src/recursion/*.cc"      # 明确包含子目录（可选，更精确）
    "${PROJECT_SOURCE_DIR}/../src/sort/*.cc"           # 明确包含子目录（可选，更精确）
    "${PROJECT_SOURCE_DIR}/../src/tree/*.cc"           # 明确包含子目录（可选，更精确）
    "${PROJECT_SOURCE_DIR}/../src/task_scheduler/*.cc"           # 明确包含子目录（可选，更精确)
)

# 生成可执行文件（正确引用 SOURCES 变量）
add_executable(${TARGET} 
    ${LOCAL_SOURCES} 
    ${SRC_FILES}
    )

# 链接GTest和你的库（如果有的话，这里我们直接链接源文件）
target_link_libraries(${TARGET} ${GTEST_LIBRARIES} ${GMOCK_LIBRARIES} pthread)
